// 导入Node.js内置的querystring模块 专门用来处理查询字符串，通过模块提供的parse()函数，查询字符串
const qs = require('querystring')
const bodyPares = (req, res, next) => {
    // 定义中间件具体的业务逻辑
    // 监听req的data事件：在中间件中，需要监听req对象的data事件，来获取客户端发送到服务器的数据
    // 1.定义一个str字符串，专门用来存储客户端发送过来的请求的数据
    let str = '';
    // 2.监听 req 的data事件
    req.on('data', (chunk) => {
        str += chunk
    })

    // 3.监听req的end事件
    req.on('end', () => {
        // 在str中存放的是完整的请求数据
        console.log(str);
        // TOOO:把字符串格式的请求体数据，解析成对象格式
        const body = qs.parse(str) //调用qs.parse()方法，把查询字符串解析为对象
        req.body = body // 将解析出来的求情对象，挂载为req.body 属性
        next() // 最后，一定调用next()函数，执行后续的业务逻辑
    })
}

module.exports = bodyPares